Repository navigation
[6/n] simplify FetchArtifactImpl interface - #8040
Merged
sunshowers merged 8 commits intoApr 26, 2025
Merged
Conversation
Created using spr 1.3.6-beta.1 [skip ci]
Created using spr 1.3.6-beta.1
Created using spr 1.3.6-beta.1 [skip ci]
jgallagher
approved these changes
Apr 24, 2025
| pub(crate) trait FetchArtifactImpl: fmt::Debug + Send + Sync { | ||
| fn peers(&self) -> Box<dyn Iterator<Item = PeerAddress> + Send + '_>; | ||
| fn peer_count(&self) -> usize; | ||
| fn peers(&self) -> PeerAddresses; |
Contributor
There was a problem hiding this comment.
Could this be
Suggested change
| fn peers(&self) -> PeerAddresses; | |
| fn peers(&self) -> &PeerAddresses; |
and let the caller clone it if desired?
Contributor
Author
There was a problem hiding this comment.
Ah actually -- the mock/fake implementation generates a PeerAddresses on the fly. We could store the addresses in the required form, I guess.
Created using spr 1.3.6-beta.1 [skip ci]
Created using spr 1.3.6-beta.1
sunshowers
changed the base branch from
sunshowers/spr/main.6n-simplify-fetchartifactimpl-interface
to
main
April 25, 2025 19:24
sunshowers
enabled auto-merge (squash)
April 25, 2025 19:25
sunshowers
deleted the
sunshowers/spr/6n-simplify-fetchartifactimpl-interface
branch
April 26, 2025 00:02
sunshowers
added a commit
that referenced
this pull request
Apr 26, 2025
There's been a long-standing issue with the installinator where reports to wicketd get delayed quite substantially. That happens because we use one task to send reports out to every peer, blocking until all of those peers come back. I'd assumed in the past that if installinator reached out to an unreachable peer, it would receive a TCP connection refused message, but that isn't the case -- instead, it times out. This causes reports to only be sent out roughly every 15 seconds which isn't ideal. To fix this issue, spin up separate report tasks for each peer. Introduce separate tasks for: * discovery (make this a persistent task that publishes updates to a watch channel) * peer reconciliation (new peers have new report tasks spun up, while removed peers' report tasks are cancelled) * reporting (each peer now has its own report loop) Also simulate some kinds of network flakiness in our property-based tests. I did a mupdate on dublin and saw that installinator reports started coming through every 2 seconds rather than every 15 or so, as expected. Depends on: - #8035 - #8036 - #8037 - #8038 - #8039 - #8040
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rather than returning a boxed iterator, simply return the set of peers as a concrete type.
I wanted to also align
FetchArtifactBackendwithReportProgressBackend(single persistent backend rather than new ones generated each time discovery happens), but it was a bigger lift than I wanted to handle right now, so decided to punt on that. I've added a note about doing this in the future.